package cc.ok200.api.config;

import com.alibaba.fastjson.serializer.ValueFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

/**
 * FastJSON值过滤器配置
 * 用于过滤响应中的null值
 */
@Configuration
public class FastJsonFilterConfig {

    /**
     * 创建值过滤器，过滤掉null值
     * 
     * @return ValueFilter实例
     */
    @Bean
    public ValueFilter nullValueFilter() {
        return (object, name, value) -> {
            // 过滤掉所有null值
            if (value == null) {
                return null; // 返回null，FastJSON在不指定WriteMapNullValue时会忽略这些字段
            }
            
            // 如果值是Map类型，递归过滤Map中的null值
            if (value instanceof Map) {
                Map<?, ?> map = (Map<?, ?>) value;
                map.entrySet().removeIf(entry -> entry.getValue() == null);
            }
            
            return value;
        };
    }
} 